package com.asialjim.wechat.core.api;

import com.asialjim.wechat.apiservice.ApiRequest;
import com.asialjim.wechat.apiservice.HttpMethod;
import com.asialjim.wechat.apiservice.constant.WeChatConstants;
import com.asialjim.wechat.core.api.accesstoken.AccessTokenRes;
import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.Getter;
import org.apache.http.entity.ContentType;

/**
 * <h1><em>ASIAL JIM JAVA DOC</em></h1><hr/>
 * <h2>CLASS DESCRIPTION <i>[ NAME: WeChatApi ]</i></h2><strong>
 * <p> we-chat api
 * </strong><p><p><em>Copyright &copy; Asial Jim Co., LTD</em><hr/>
 *
 * @author Asial Jim &nbsp;&nbsp; <span>Email:<a href="mailto:asialjim@hotmail.com">asialjim@hotmail.com</a> &nbsp;&nbsp; <a href="asialjim@qq.com">asialjim@qq.com</a></span>
 * @version 1.0.0
 * @since 2021/3/11   &nbsp;&nbsp; JDK 8
 */
@Getter(value = AccessLevel.PUBLIC)
@AllArgsConstructor(access = AccessLevel.PRIVATE)
public enum WeChatApi implements BaseWeChatApi {

    /**
     * <h3>FIELD DESCRIPTION</h3>
     * get access token
     */
    GET_ACCESS_TOKEN(WeChatConstants.WeChatApiUrl.GET_ACCESS_TOKEN, "getAccessToken", HttpMethod.GET, AccessTokenRes.class,
                                ContentType.APPLICATION_JSON,WeChatApiAccessTokenType.NONE, null,null),

    ;

    private final String uri;
    private final String name;
    private final HttpMethod httpMethod;
    private final Class<?> responseClass;
    private final ContentType responseContentType;
    private final WeChatApiAccessTokenType accessTokenType;
    private final Class<? extends ApiRequest.RequestUrlParam> urlParamClass;
    private final Class<? extends ApiRequest.RequestBodyParam> bodyParamClass;
}